let express = require('express');
let router = express.Router();

let fs = require('fs');
let multer = require('multer');

// 使用硬盘存储模式设置存放接收到的文件的路径以及文件名
let storage = multer.diskStorage({
  destination(req, file, cb) {
    // 接收到文件后输出的保存路径（若不存在则需要创建）
    cb(null, 'public/upload');
  },
  filename(req, file, cb) {
    // 获取后缀
    let fileSuffix = file.originalname.match(/\.\w+$/)[0]
    cb(null, Date.now() + fileSuffix);
  }
});

// 创建文件夹  使用此代码就是为了让我们查找磁盘中是否有该文件夹，如果没有，可以自动创建，而不是我们提前手动创建好。如果不使用此代码，则我们再使用该文件夹之前，需要手动创建好当前问价夹
let createFolder = function (folder) {
  try {
    // 测试 path 指定的文件或目录的用户权限,我们用来检测文件是否存在
    // 如果文件路径不存在将会抛出错误"no such file or directory"
    fs.accessSync(folder);
  } catch (e) {
    // 文件夹不存在，以同步的方式创建文件目录。
    fs.mkdirSync(folder);
  }
};

let uploadFolder = './public/upload';
createFolder(uploadFolder);

// 创建 multer 对象
let uploadController = multer({ storage: storage });

/* POST upload listing. */
router.post('/', uploadController.single('file'), function (req, res, next) {
  let file = req.file;
  console.log('文件类型：%s', file.mimetype);
  console.log('原始文件名：%s', file.originalname);
  console.log('文件大小：%s', file.size);
  console.log('文件保存路径：%s', file.path);
  console.log('文件保存路径：%s', typeof file.path);
  // 接收文件成功后返回数据给前端
  res.json({
    code: 1,
    url: file.path.replace('public\\upload', '').replace(/\\/g, '/')
  });
});

// 导出模块（在 app.js 中引入）
module.exports = router;
